/**
 * 客户订货系统，属于杭州升鲜宝科技有限公司，由升鲜宝团队开发
 * 主要特点：不同的客户登录，显示不同的商品，不同的商品价格
 * 内置了简易的进销存系统，方便升鲜宝的客户的客户进行简易的出库、入库、盘点、报损、库存查询
 * 升鲜宝供应商管理系统，全套系统授权源代码使用。方便有一定开发能力的公司与团队进行快速的供应链管理系统开发与应用
 * 联系方式：微信 sxbscm2012  整套源代码0加密，方便二次开发  
 * 联系人： 余东升
 * 手机号码： 19186059021
 * 
 */
import Schema from 'async-validator';
import { message } from './useToast'
/**
 * @description 表单校验方法 see https://github.com/yiminghe/async-validator
 * @param rules Object 
 * {
 *    name: Rule[]
 * }
 * rule: [
 * { require: true, message: '请输入xxx' },
 * { pattern: Regular, message: '格式不正确xxxx' },
 * { validator: Function(value, rule, formData),  }
 * ]
 */
export const useCheckForm = (rules, formData) => {
  // 检验整个表单
  const validate = () => {
    return new Promise(res => {
      const validator = new Schema(rules);
      validator.validate(formData, (errors, fields) => {
        if (errors) {
          // validation failed, errors is an array of all errors
          // fields is an object keyed by field name with an array of
          // errors per field
          message(errors[0].message)
          res(false)
        } else {
          // validation passed
          res(true)
        }
      });
    })
  }
  // 检验表单某个字段
  const validateField = (name) => {
    return new Promise(res => {
      const validator = new Schema({
        [name]: rules[name]
      });
      validator.validate({
        [name]: formData[name]
      }, (errors, fields) => {
        if (errors) {
          message(errors[0].message)
          res(false)
        } else {
          res(true)
        }
      });
    })
  }
  return {
    validate,
    validateField
  }
}